package fenetres;

import java.awt.Color;
import java.util.Vector;

import javax.swing.*;

import modeles.*;
import controles.*;

public class AddProductStockFrame extends JInternalFrame{

	JPanel entetePanel, panel1;
	JTabbedPane tabbedPane ;
	
	public JTable produitTable;
	public GenericTableModel tableModel;
	String [] titreTable = {"Code Produit","Produit","Destination","Quantite"};
	public JButton supprBut,ajoutBut,validerBut,annulerBut,validerProdBut,annulerProdBut;
	public Vector<Produit> listProduitsBase;
	
	public JTextField codeProdTxt,qteTxt,numBETxt;
	public JComboBox nomCombo,stockCombo;
	public Utilisateur userConnected;
	public Vector<Stock> listStock;
	public Vector<InfoStock> listProduitSelected;
	
	
	Accueil accueil;
	
	public AddProductStockFrame (Utilisateur _userConnected, Accueil _accueil)
	{
		super("Mise a jour stock",
	              false, //resizable
	              true, //closable
	              false, //maximizable
	              false);//iconifiable
	

		accueil = _accueil ;
		userConnected = _userConnected;
		listProduitSelected = new Vector<InfoStock>();
		
		boolean accept = checkUserConnected();
		if (accept){
			setSize(700,630);
			setLocation(30,20);
			//elaboration de l'entete
			entetePanel = new JPanel ();
			entetePanel.setLayout(null);
			
			tableModel = new GenericTableModel(titreTable);
			
			JLabel titleLabel = new javax.swing.JLabel("Entree des produits en stock ");
			//titleLabel.setFont(new java.awt.Font("Lucida Grande", 0, 16));
			titleLabel.setFont(new java.awt.Font("Century Schoolbook L", java.awt.Font.ITALIC, 24));
			titleLabel.setForeground(Color.BLUE);
			
			numBETxt = new JTextField();
			//determiner le numero du Bon d'Entree suivant
			
			numBETxt.setText(etablishNextCodeBE());
			numBETxt.setEditable(false);
			
			entetePanel.add(titleLabel);
			entetePanel.add(numBETxt);
			
			titleLabel.setBounds(120,20,400,30);
			numBETxt.setBounds(520,20,120,30);
			
			entetePanel.setBounds(0,0,700,70);
			this.getContentPane().setLayout(null);
			this.getContentPane().add(entetePanel);

			creerOnglet();
			updateListeProd ();
			
					
			this.getContentPane().add(tabbedPane);
			this.setVisible(true);
		}
	}
	
	public boolean checkUserConnected(){
		//userConnected = accueil.authent.getUserConnected();
		if( userConnected == null){
			JOptionPane.showMessageDialog(null, "Aucun utilisateur connecte!! \n Veuillez connecter svp :) ","Erreur",JOptionPane.ERROR_MESSAGE);
			this.dispose();
			return false;
		}
		else {
			return true;
		}
	}
	
	public void creerOnglet(){
		tabbedPane = new JTabbedPane();
		tabbedPane.setBounds(0,70,700,530);
		
		panel1 = new JPanel ();

		
		panel1.setBounds(0,70,700,530);

		
		
		tabbedPane.addTab("Stock", null, panel1,
		                  "Does nothing");

	}
	
	public void updateListeProd(){
		 JLabel entete = new JLabel ("Liste des produits a entrer en stock");
		 entete.setFont(new java.awt.Font("Century Schoolbook L", java.awt.Font.BOLD, 16));
		 entete.setForeground(Color.DARK_GRAY);
		 entete.setBounds(5,5,400,30);
		 
		 tableModel = new GenericTableModel(titreTable);
		 produitTable = new JTable ();
		 produitTable.setModel(tableModel);
		 produitTable.setOpaque(false);
		 produitTable.setRowHeight(25);
		 produitTable.setGridColor(Color.darkGray);
		 produitTable.setShowGrid(true);
		 
		 JScrollPane scroll = new JScrollPane(produitTable);
		 scroll.setBounds(5,45,400, 200);
		 supprBut = new JButton("Supprimer");
		 supprBut.setBounds(410,60,120,30);
		 supprBut.addActionListener(new AddProductStockAction(this));
		 //ajout produit
		 JLabel ajoutLab = new JLabel ("Ajout Produit");
		 ajoutLab.setFont(new java.awt.Font("Century Schoolbook L", java.awt.Font.BOLD, 16));
		 ajoutLab.setForeground(Color.BLACK);
		 
		 JLabel nomLab = new JLabel ("Nom :");
		 listProduitsBase = listeProduits();
		 String [] listProduitTab = new String[listProduitsBase.size()];
		 for (int iIndex = 0 ; iIndex < listProduitsBase.size(); iIndex++)
		{
			 Produit oProduit = listProduitsBase.get(iIndex);
			 listProduitTab [iIndex] = oProduit.getProduit_libelle();
		}
		 nomCombo = new JComboBox (listProduitTab);
		 nomCombo.addActionListener(new AddProductStockAction(this));
		
		 JLabel codeProdLab = new JLabel ("Code :");
		 codeProdTxt = new JTextField ();
		 codeProdTxt.setEditable(false);
		 
		//chargemenr des categories dans la base de donnees
			DBManager dbManager = new DBManager();
			Stock oStock = new Stock();
			listStock = oStock.getListStock(dbManager);
			String[] stockTab = new String [listStock.size()+1];
			
			for(int i=0; i<listStock.size() ; i++){
				Stock stock = listStock.get(i);
				stockTab[i] = stock.getStock_name();
			}
		 JLabel stockLab = new JLabel ("Stock :");
		 stockCombo = new JComboBox (stockTab);
		 
		 JLabel qteLab = new JLabel ("Quantite :");
		 qteTxt = new JTextField ();
		 ajoutBut = new JButton("Ajouter");
		 ajoutBut.addActionListener(new AddProductStockAction(this));
		 validerProdBut = new JButton("Entrer en Stock");
		 validerProdBut.addActionListener(new AddProductStockAction(this));
		 annulerProdBut = new JButton("Annuler");
		 annulerProdBut.addActionListener(new AddProductStockAction(this));
		 
		 //panel d'ajout de produit
		 JPanel panel3 = new JPanel();
		 panel3.setLayout(null);
		 panel3.setBounds(0,280,700,150);
		 
		 panel1.setLayout(null);
		 panel1.add(entete);
		 panel1.add(scroll);
		 panel1.add(supprBut);
		 panel3.add(ajoutLab);
		 panel3.add(nomLab);
		 panel3.add(nomCombo);
		 panel3.add(codeProdLab);
		 panel3.add(codeProdTxt);
		 panel3.add(stockLab);
		 panel3.add(stockCombo);
		 panel3.add(qteLab);
		 panel3.add(qteTxt);
		 panel3.add(ajoutBut);
		 panel1.add(validerProdBut);
		 panel1.add(annulerProdBut);
		 panel3.setOpaque(true);
		 panel3.setBackground(Color.LIGHT_GRAY);
		 panel1.add(panel3);
		 
		 validerProdBut.setBounds(170,450,150,30);
		 annulerProdBut.setBounds(400,450,150,30);
		 ajoutLab.setBounds(155,10,180,30);
		 nomLab.setBounds(5,50,80,30);
		 nomCombo.setBounds(90,50,200,30);
		 stockLab.setBounds(350,50,80,30);
		 stockCombo.setBounds(435,50,150,30);
		 codeProdLab.setBounds(5,90,150,30);
		 codeProdTxt.setBounds(90,90,150,30);
		 qteLab.setBounds(350,90,150,30);
		 qteTxt.setBounds(435,90,150,30);
		 ajoutBut.setBounds(500,5,120,30);

	 }
	
	public Vector <Produit> listeProduits(){
		DBManager dbManager =  new DBManager ();
		Vector<Produit> oVectListProduit = new Vector<Produit> ();
		//oVectListProduit = dbManager.getListProduct();
		Produit oProduit = new Produit ();
		oVectListProduit = oProduit.getListProduct(dbManager);
		return oVectListProduit;
	}
	
	public void updateTable(){
		tableModel.removeAllRows();
		if(listProduitSelected.size()>0)
		{
			for(int i=0; i<listProduitSelected.size();i++){
				tableModel.addNewRow();
				InfoStock oInfoStock = listProduitSelected.get(i);
				//tableModel.setValueAt(nomProduit, iLigne, 0);
				tableModel.setValueAt(oInfoStock.getInfoStock_produit_code(), i, 0);
				tableModel.setValueAt(oInfoStock.getInfoStock_produit_libelle(), i, 1);
				tableModel.setValueAt(oInfoStock.getStock_nom(), i, 2);
				tableModel.setValueAt(oInfoStock.getQte(), i, 3);
			}
		}
		tableModel.fireTableDataChanged();
	}
	
	public String etablishNextCodeBE(){
		String codeProd = "";
		DBManager dbManager = new DBManager();
		InfoStock infoStock = new InfoStock();

		int numBE = infoStock.getNumNextBE(dbManager);
		
		if(numBE < 10) codeProd = "BE000"+numBE;
		else if(numBE<100) codeProd = "BE00"+numBE;
		else if (numBE <1000) codeProd = "BE0"+numBE;
		else if(numBE < 10000) codeProd = "BE"+numBE;
		return codeProd;
	}
}
